package com.biz.ssm.base;


import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;


/**
 * 通用泛型Mapper基类
 * @param <T,TD>
 */
public interface BaseMapper<T,ID extends Serializable> {
	/**
	 * 根据ID查询记录
	 *
	 * @param id
	 * @return
	 */
	public T selectById(ID id);

	/**
	 * 根据ID删除记录
	 *
	 * @param id
	 * @return
	 */
	public int deleteById(ID id);

	/**
	 * 插入记录
	 *
	 * @param record
	 * @return
	 */
	public Long insert(T record);

	/**
	 * 更新记录
	 *
	 * @param record
	 * @return
	 */
	public int update(T record);

	/**
	 * 查询所有
	 *
	 * @return
	 */
	public List<T> findAll();

	/**
	 * 查询记录总数
	 *
	 * @return
	 */
	Integer count();

	/**
	 * 根据userId查询记录
	 *
	 * @param userId
	 * @return
	 */
	public T selectByUserId(ID userId);

	public List<T> findList(@Param("pageable") Pageable pageable);

	/**
	 * 获取记录总数
	 *
	 * @param pageable
	 *
	 * @return
	 */
	Integer countForList(@Param("pageable") Pageable pageable);


	/**
	 * 批量插入
	 * @param list
	 * @return
	 */
	int insertList(@Param("list")List<T> list);
}
